The UPnP architecture is designed to provide peer-to-peer connectivity for various types of devices, including audio/video (A/V) devices, such as, for example, televisions (TVs), video cassette recorders (VCRs), compact disk (CD) players and recorders, digital video disk (DVD) players and recorders, personal video recorders (PVRs), cameras, set top boxes, etc.
The UpnP architecture specifies how devices are to join a network and how devices can be controlled using extensible markup language (XML) messages sent over hypertext transfer protocol (HTTP). UPnP specifications leverage from existing standard protocols, such as HTTP, User Datagram Protocol (UDP), XML and Simple Object Access Protocol (SOAP). UPnP allows plug and play of networked devices.
Devices, services and control points are basic components of the UPnP device architecture. A UPnP device is any entity on the network that implements the protocols required by UPnP standard. A UPnP device supports zero or more services. A UPnP service is a unit of functionality implemented by a UPnP device. A UPnP service is a set of methods or actions, each of which has optional input and output parameters. A UPnP device also maintains state variables and sends notifications to control points when occurrences cause the state variables to change.
A control point is an entity in the network that works with or uses the functionality provided by a UPnP device. A control point can invoke actions on services. In client/server terminology, a control point is analogous to the client and a device is analogous to the server. The control point can also subscribe to events that cause the control point to be notified by the device when the device detects changes in its state variables.
Device discovery is provided in UPnP networks to enable control points to locate UPnP devices on the network and to determine the capabilities of the UPnP devices. When a UPnP device joins a network, the device acquires a unique address that the control point and other devices can use to address the device. Typically, either Dynamic Host Configuration Protocol (DHCP) or Automatic Private Internet Protocol (Auto IP) is used to assign an Internet Protocol (IP) address to the device joining the network. When the device joins the network, an XML device description document that summarizes the services and capabilities of the device in a standard format is communicated to the control point. The device joining the network uses a Simple Service Discovery Protocol (SSDP) message to advertise its services and capabilities to control points. Similarly, when a control point joins a network, it uses SSDP messages to locate devices of interest of the network. In either case, the result is that the XML device description document is communicated from the UPnP device to the control point.
Control is provided in the UPnP network by the control point, which sends requests in the form of SOAP control messages to UPnP devices requesting that actions be performed by the devices. The XML device description document defines the actions that services of the device are capable of performing or providing.
Eventing is provided in the UPnP network by the services of the UPnP devices notifying the control points when internal state variables of the UPnP devices change. The General Eventing and Notification Architecture (GENA) format is normally used for this purpose, and the notifications are normally in XML format. The device services publish updates when the state variables change, and control points may subscribe to receive the updates.
Presentation is provided in the UPnP network to allow users to control UPnP devices and/or view device status. If a UPnP device has a Uniform Resource Locator (URL) for presentation, a control point can retrieve a page from the URL, load the page into a browser software program, and allow a user to control the device or view the status of the device via an HTML-based user interface.
While discovery enables UPnP devices to locate other UPnP devices and determine each other's capabilities, discovery does not enable sufficient information to be obtained to enable provisioning to be performed without user interaction. Currently, provisioning requires that certain steps be manually performed by a user. For example, in the case in which a set top box of a home network is to be provisioned, the user normally obtains pre-provisioning information from a provider via telephone or the Internet, and then inputs the pre-provisioning information to the set top box. Once the set top box has been provided with the pre-provisioning information, it interacts with a gateway server of the home network to become provisioned.
Requiring user interaction imposes a burden on the user, and makes the provisioning process prone to human error. One of the primary goals of the UPnP architecture is to reduce the amount of user interaction that is required in order to join a device to a network and enable the device to communicate with other devices already on the network. The current process of provisioning a device is not wholly consistent with this goal because of the level of user interaction that is currently needed to provision a device. A need exists for a way to provision devices on a UPnP network that does not require steps to be manually performed by a user including the discovery of a DRM service and obtaining relevant DRM pre-provisioning data.